/**
 * 
 */
package com.herotactics.fuentedatos;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Collection;

import jugador.Jugador;
import logica.Partida;
import mapa.Mapa;
import unidades.Unidad;

/**
 * Interface que deben implementar cualquier clase que se dedique al flujo de datos del juego.
 * Faltan metodos.
 * @author Gonzalo A. Bella Fern�ndez
 *
 */
public interface FuenteDatos {

    /**
     * Crea la conexi�n.
     * @throws Exception
     */
    public void init() throws Exception;

    /**
     * Cierra la conexi�n abierta por el metodo init().
     * 
     * @throws Exception
     */
    public void end() throws Exception;

    /**
     * @return Una Collection de todos los objetos Partida almacenados 
     * @throws Exception
     */
    public Collection<Partida> getAllPartida() throws Exception;

    /**
     * @param partida
     * @return El n�mero de partidas insertadas.
     * @throws Exception
     */
    public int insertPartida(Partida partida) throws Exception;

    /**
     * @param partida
     * @return El n�mero de partidas borradas.
     * @throws Exception
     */
    public int deletePartida(Partida partida) throws Exception;

    /**
     * @param unidades
     * @return El n�mero de unidades insertadas.
     * @throws Exception
     */
    public int insertUnidad(Collection<Unidad> unidades) throws Exception;

    /**
     * @param unidad
     * @return El n�mero de unidades borradas.
     * @throws Exception
     */
    public int deleteUnidad(Unidad unidad) throws Exception;

    /**
     * @param jugador
     * @return El n�mero de partidas insertados.
     * @throws Exception
     */
    public int insertJugador(Jugador jugador) throws Exception;

    /**
     * @param jugador
     * @return El n�mero de jugadores borrados.
     * @throws Exception
     */
    public int deleteJugador(Jugador jugador) throws Exception;

    /**
     * Metodo que sirve para actualizar los creditos de un jugador.
     * @param jugador
     * @return El n�mero de jugadores actualizados
     * @throws Exception
     */
    public int updateJugador(Jugador jugador) throws Exception;

    /**
     * @param idMapa
     * @return
     */
    public Mapa getMapa(int idMapa) throws IOException, ClassNotFoundException;

    /**
     * @return
     */
    public Collection<Mapa> getAllMapa() throws IOException, ClassNotFoundException;

    /**
     * @return
     */
    public Collection<String> getAllJugadores() throws SQLException;
}
